17 research outputs found

    A Framework for Agile Development of Component-Based Applications

    Get PDF
    Agile development processes and component-based software architectures are two software engineering approaches that contribute to enable the rapid building and evolution of applications. Nevertheless, few approaches have proposed a framework to combine agile and component-based development, allowing an application to be tested throughout the entire development cycle. To address this problematic, we have built CALICO, a model-based framework that allows applications to be safely developed in an iterative and incremental manner. The CALICO approach relies on the synchronization of a model view, which specifies the application properties, and a runtime view, which contains the application in its execution context. Tests on the application specifications that require values only known at runtime, are automatically integrated by CALICO into the running application, and the captured needed values are reified at execution time to resume the tests and inform the architect of potential problems. Any modification at the model level that does not introduce new errors is automatically propagated to the running system, allowing the safe evolution of the application. In this paper, we illustrate the CALICO development process with a concrete example and provide information on the current implementation of our framework

    Contrôle de la fiabilité des logiciels à évoluer : un canevas pour le développement incrémental et itératif de logiciels à composants et orientés service

    Get PDF
    National audienceLes systèmes logiciels modernes se distinguent par un besoin d'évolution rapide et une complexité croissante, avec notamment l'apparition de nouveaux domaines d'applications, comme par exemple les logiciels destinés aux périphériques mobiles, c'est-à-dire les assistants mobiles tels que les téléphones ou encore les tablettes. Dans ces domaines, les utilisateurs réclament que les logiciels fournissent toujours plus de fonctionnalités. Ces logiciels ont alors besoin de prendre en compte ces nouvelles exigences demandées, tout en ayant conscience du nombre toujours croissant de périphériques hétérogènes

    Contract Aware Components, 10 years after

    Get PDF
    The notion of contract aware components has been published roughly ten years ago and is now becoming mainstream in several fields where the usage of software components is seen as critical. The goal of this paper is to survey domains such as Embedded Systems or Service Oriented Architecture where the notion of contract aware components has been influential. For each of these domains we briefly describe what has been done with this idea and we discuss the remaining challenges.Comment: In Proceedings WCSI 2010, arXiv:1010.233

    Canevas de développement agile pour l'évolution fiable de systèmes logiciels à composants et orientés services

    No full text
    Modern software is characterized by a need for constant and rapid evolution, such as in the mobile domain. To facilitate the development and the rapid evolution of complex systems, software engineering approaches have been proposed, such as software architecture and agile software development. However, current solutions offer poor support to enable the development of a reliable system, i.e, allow its modification while ensuring its compliance with the quality of services requirement and its good overall safety. The contribution of this PhD thesis is CALICO, an agile development framework for the design and evolution of safe component-based and service-oriented software. The agile software development relies on an iterative and incremental development cycle that allows the architect to iterate between the design of the architecture and the debug of the software in its execution context. At each iteration, the architect can evolve its software and check the consistency of its evolution through the execution of static and dynamic analysis tools. Thus, during the design and the evolution of the system, architect can use a set of metamodels to specify the structure of the architecture and its various quality of services requirement. During the deployment, CALICO instantiates the system on the target runtime platform from the models specified and keeps them synchronized with the software during its execution. By this way, the architect still has a conceptual view which allows him to reason on the critical software properties during its evolution. Moreover, in order to check these evolutions, CALICO provides a unifying framework which allows reuse of many static analysis tools of software architectures and dynamic debugging tools, that were scattered in different existing platforms. Thus, each change can be statically analyzed on the conceptual view before being propagated to the software system. Dynamic analysis are based on data values only available during the execution. The capture of these values is done through automatic instrumentation of the software system. Globally, CALICO enables reliable evolution even if the underlying platforms does not natively provide this support. Our contribution is concretized by a multi-platform implementation. The current version handles four component-based and service-oriented platforms. Moreover, the benchmarks that we have performed show that CALICO is usable for the design and development of safe applications up to 10,000 components and services, which corresponds to the maximal load of most runtime platforms.Les systèmes logiciels modernes se caractérisent par un besoin d'évolutions perpétuelles et rapides, comme par exemple dans le monde de l'informatique mobile. Pour faciliter le développe\-ment et l'évolution rapide de systèmes complexes, des approches de génie logiciel ont été proposées, telles que les architectures logicielles et la méthode de conception agile. Néanmoins, les solutions actuelles offrent peu de support pour permettre l'évolution fiable d'un système, c'est-à-dire permettre sa modification tout en garantissant le respect de ses exigences de qualités de service et de bon fonctionnement global. La contribution de cette thèse est CALICO, un canevas de développement agile pour la conception et l'évolution fiable de systèmes logiciels à composants et orientés services. Le développement agile repose sur l'utilisation d'un cycle de développement itératif et incrémental qui permet à l'architecte d'itérer entre les étapes de conception de l'architecture et de débogage du logiciel dans son environnement d'exécution. A chaque itération du cycle, l'architecte peut faire évoluer son logiciel et fiabiliser ses évolutions grâce à l'exécution d'analyses statiques et dynamiques complémentaires. Ainsi, lors de la conception et de l'évolution d'un système, l'architecte dispose d'un ensemble de métamodèles pour spécifier la structure de l'architecture de son logiciel et ses diverses exigences de qualité de services. Lors du déploiement, CALICO utilise les modèles spécifiés pour instancier le système sur la plate-forme d'exécution cible et les garde synchronisés avec le logiciel lors de son exécution. De cette façon, l'architecte dispose toujours d'une vue conceptuelle qui lui permet de raisonner sur les propriétés critiques de son logiciel lors d'une évolution. De plus, pour fiabiliser ces évolutions, CALICO offre un cadre fédérateur qui autorise la réutilisation de nombreux outils d'analyse statique des architectures logicielles et de débogage dynamique qui étaient jusqu'alors dispersés dans différentes plates-formes existantes. Ainsi, chaque évolution peut être analysée statiquement sur la vue conceptuelle avant d'être propagée au système logiciel. Les analyses dynamiques reposent quant à elles sur des valeurs disponibles à l'exécution. La capture de ces valeurs est effectuée grâce à une instrumentation automatique du système logiciel. CALICO permet donc de fiabiliser les évolutions même si les plates-formes d'exécution sous-jacentes ne le proposent pas nativement. Notre contribution se concrétise par une implémentation multi plates-formes. La version actuelle prend en charge quatre plates-formes à composants et une plate-forme à services. Par ailleurs, les tests de performances que nous avons réalisés démontrent que CALICO est utilisable pour la conception et l'évolution fiable de larges applications jusqu'à 10000 composants et services, ce qui correspond à la montée en charge maximale de la plupart des plates-formes d'exécution

    Agile development framework for the safe evolution of component-based and service-oriented systems

    No full text
    Les logiciels se caractérisent par un besoin d'évolutions perpétuelles et rapides. Pour faciliter l'évolution rapide de systèmes, des approches de génie logiciel ont été proposées, telles que les architectures logicielles et la méthode de conception agile. Néanmoins, les solutions actuelles offrent peu de support pour permettre l'évolution fiable d'un système, c'est-à-dire permettre sa modification tout en garantissant le respect de ses exigences de qualités de service (QdS) et de bon fonctionnement global. La contribution de cette thèse est CALICO, un canevas de développement agile et multi plates-formes pour la conception et l'évolution fiable de systèmes logiciels à composants/services. Le développement agile repose sur un cycle itératif et incrémental qui permet à l'architecte d'itérer entre les étapes de conception de l'architecture et de débogage du logiciel dans son environnement d'exécution. Ainsi, lors de la conception, l'architecte dispose de métamodèles pour spécifier la structure de l'architecture et ses diverses exigences de QdS. Lors du déploiement, CALICO utilise les modèles spécifiés pour instancier le système sur la plate-forme d'exécution et les garde synchronisés avec le logiciel lors de son exécution. L'architecte dispose toujours d'une vue conceptuelle qui lui permet de raisonner sur les propriétés de son logiciel lors d'une évolution. Pour fiabiliser ces évolutions, CALICO offre un cadre fédérateur qui autorise la réutilisation de nombreux outils d'analyse statique et de débogage dynamique qui étaient jusqu'alors dispersés dans différentes plates-formes. CALICO permet donc de fiabiliser les évolutions même si les plates-formes ne le proposent pas.Software is characterized by a need for constant and rapid evolution. To facilitate the rapid evolution of systems, software engineering approaches have been proposed, such as software architecture and agile method. However, current solutions offer poor support to enable the development of a reliable system, i.e., allow its modification while ensuring compliance with the quality of service requirements (QoS) and its good overall safety. The contribution of this thesis is CALICO, an agile and multi platforms development framework for the design and evolution of reliable component-based and service-oriented software. The agile development relies on an iterative and incremental cycle that allows the architect to iterate between the design of architecture and the debug of software in its execution context. Thus, at design, the architect can use the CALICO's metamodels to specify the structure of the architecture and the various QoS properties. At deployment, CALICO instantiates the system on the runtime platform from the specified models and keeps them synchronized with the software during its execution. By this way, the architect has a conceptual view which allows him to reason on the software properties during its evolution. In order to check these evolutions, CALICO provides a unifying framework which allows reuse of many static analysis tools and dynamic debugging tools that were previously scattered in different platforms. Globally, CALICO enables reliable evolutions even if the platforms do not provide this support

    Canevas de développement agile pour l'évolution fiable de systèmes logiciels à composants et orientés services

    No full text
    Les logiciels se caractérisent par un besoin d'évolutions perpétuelles et rapides. Pour faciliter l'évolution rapide de systèmes, des approches de génie logiciel ont été proposées, telles que les architectures logicielles et la méthode de conception agile. Néanmoins, les solutions actuelles offrent peu de support pour permettre l'évolution fiable d'un système, c'est-à-dire permettre sa modification tout en garantissant le respect de ses exigences de qualités de service (QdS) et de bon fonctionnement global. La contribution de cette thèse est CALICO, un canevas de développement agile et multi plates-formes pour la conception et l'évolution fiable de systèmes logiciels à composants/services. Le développement agile repose sur un cycle itératif et incrémental qui permet à l'architecte d'itérer entre les étapes de conception de l'architecture et de débogage du logiciel dans son environnement d'exécution. Ainsi, lors de la conception, l'architecte dispose de métamodèles pour spécifier la structure de l'architecture et ses diverses exigences de QdS. Lors du déploiement, CALICO utilise les modèles spécifiés pour instancier le système sur la plate-forme d'exécution et les garde synchronisés avec le logiciel lors de son exécution. L'architecte dispose toujours d'une vue conceptuelle qui lui permet de raisonner sur les propriétés de son logiciel lors d'une évolution. Pour fiabiliser ces évolutions, CALICO offre un cadre fédérateur qui autorise la réutilisation de nombreux outils d'analyse statique et de débogage dynamique qui étaient jusqu'alors dispersés dans différentes plates-formes. CALICO permet donc de fiabiliser les évolutions même si les plates-formes ne le proposent pas.Software is characterized by a need for constant and rapid evolution. To facilitate the rapid evolution of systems, software engineering approaches have been proposed, such as software architecture and agile method. However, current solutions offer poor support to enable the development of a reliable system, i.e., allow its modification while ensuring compliance with the quality of service requirements (QoS) and its good overall safety. The contribution of this thesis is CALICO, an agile and multi platforms development framework for the design and evolution of reliable component-based and service-oriented software. The agile development relies on an iterative and incremental cycle that allows the architect to iterate between the design of architecture and the debug of software in its execution context. Thus, at design, the architect can use the CALICO's metamodels to specify the structure of the architecture and the various QoS properties. At deployment, CALICO instantiates the system on the runtime platform from the specified models and keeps them synchronized with the software during its execution. By this way, the architect has a conceptual view which allows him to reason on the software properties during its evolution. In order to check these evolutions, CALICO provides a unifying framework which allows reuse of many static analysis tools and dynamic debugging tools that were previously scattered in different platforms. Globally, CALICO enables reliable evolutions even if the platforms do not provide this support.LILLE1-Bib. Electronique (590099901) / SudocSudocFranceF

    Enabling Dynamic Co-evolution of Models and Runtime Applications

    No full text
    International audienceDynamic software adaptation can cause the running system to be out-of-synchronous with its model, and, thus, make the system model obsolete for the use in consistency checking. In this paper, we propose a framework for ensuring the synchronization between the model and the runtime system during dynamic adaptation. I.e., this framework maintains the high-level model of the runtime system, which is essential for system validation. We are also plugging several model validation tools to the framework, for performing system validation during dynamic adaptation

    FIESTA : A Generic Framework for Integrating New Functionalities into Software Architectures

    Get PDF
    International audienceWhen an application must evolve to cope with new context and user requirements, integrating new functionalities into its software architecture is necessary. The architect has thus to manually modify the architecture description, which is often tedious and error prone. In this paper, we propose FIESTA, a generic framework for automatically integrating new functionalities into an architecture description. Our approach is inspired by TranSAT, an integration framework. However, TranSAT is dedicated to a specific architecture description language (ADL) while our approach is ADL-independent. We have performed a domain analysis, studying for many ADLs how to integrate new functionalities. Based on this analysis, we have defined a generic ADL model to manipulate and reason about architectural elements that are involved in integration. Furthermore, we have developed a generic integration engine

    Architectural Specification and Static Analyses of Contractual Application Properties

    No full text
    International audienceBeing able to specify and verify contractual application properties at the architecture level allows architects to build better architected and more reliable systems. In this paper, we propose a model-based framework for designing contractualized architecture, independently of any paradigm (components or services). It enables a software architect to express the structural, behavioral, dataflow and QoS properties of his/her application. Our framework composes these properties in order to compute and check the properties of the assemblies incrementally. This allows architects to see the influence of their design decisions on the quality of his/her architecture and thus helps them to better design their systems architecture

    A Model-Based Framework for Statically and Dynamically Checking Component Interactions

    No full text
    International audienceBuilding applications by assembling software components requires analyses of Architecture Description (AD) models for checking that component interactions respect the application and runtime context requirements. Most existing interaction model analyses are static: they do not take into account runtime information, e.g., parameter values. This paper presents a model-based framework that enables architects to both specify component interaction and perform dynamic validation. Our framework analyses AD models to identify partially compatible interactions, which require runtime checking. Then, it instruments the application to reify runtime information for error detection. By using this framework in iterative software design processes, architects can get design feedback, \textit{i.e.}, detected errors, and update the AD models accordingly. Moreover, our solution is generic regarding underlying platforms. This genericity is achieved through the mappings from the generic AD models to platform-specific API calls for constructing the running system
    corecore